#ifndef CONSTRUITREPRESENTATIONAGENCE_HPP
#define CONSTRUITREPRESENTATIONAGENCE_HPP

#include "BaseConstruitRepresentation.hpp"

#include "XmlInfoAgence.hpp"

class StructureDonnees;

/** Classe permettant de construire une instance de \c XmlInfoAgence depuis le
  * contenu du fichier agency.xml.
  * La classe donne accès à une instance de XmlInfoAgence, qui est construite à
  * partir du fichier agency.xml, qui est téléchargé. Le travail de création est
  * effectué par la méthode construitInfoAgence, appelée depuis le slot
  * construitInfoInstance.
  *
  * @author Johan "Solo" Luisier
  * @date Novembre 2011
  */
class ConstruitRepresentationAgence : public BaseConstruitRepresentation
{
public:
 /** Constructeur.
  * Initialise la classe mère et le pointeur InfosAgence.
  *
  * @param[in] agence nom de l'agence.
  * @param[in] mdp mot de passe API.
  * @param[in] contenu type de contenu à télécharger (ici "agency").
  * @param parent pointeur sur le QObject parent.
  */
 ConstruitRepresentationAgence( const QString& agence, const QString& mdp,
				const QString& contenu, QObject* parent = 0 );
 /** Destructeur.
  * Le destructeur n'a rien de spécial à faire.
  */
 virtual ~ConstruitRepresentationAgence();
 /** Méthode responsable de récupérer les informations.
  *
  * @param[in] nomSyndicat nom du syndicat (non utilisé ici).
  */
  void chargeInformations( const QString& nomSyndicat = QString() );
 /** Permet d'accéder à InfosAgence.
  *
  * @return une référence constante sur InfosAgence.
  */
 const XmlInfoAgence& infosAgence() const;
 /** Permet de récupérer un pointeur sur InfosAgence.
  *
  * @return l'addresse de InfosAgence.
  */
 const XmlInfoAgence* infosAgencePtr() const;
protected:
 /** Pointeur sur l'instance de \c InfosAgence construite à partir des
   * informations contenues dans agency.xml.
   */
 XmlInfoAgence * InfosAgence;
protected slots:
 /** Slot virtuel pur, qui est à connecté au signal infosPretes(),
   * l'implémentation dans chaque classe dérivée doit faire suivre l'appel à
   * une méthode propre à cette classe.
   *
   * @param[in] infos pointeur sur le conteneur des informations récupérées
   * depuis le fichier téléchargé.
   */
 void construitInfoInstance( const StructureDonnees *infos );
 /** Méthode qui permet de construire l'instance de \c XmlInfoAgence depuis
   * le conteneur \c infos.
   * La méthode efface toute information déjà contenue dans InfosAgence avant
   * de créer une nouvelle instance depuis zéro.
   *
   * @param[in] infos pointeur sur le conteneur des informations récupérées
   * depuis le fichier téléchargé.
   */
 void construitInfoAgence( const StructureDonnees* infos );
};


#endif // CONSTRUITREPRESENTATIONAGENCE_HPP
